home *** CD-ROM | disk | FTP | other *** search
/ Tools Unlimited 1: The Blanker Collection / Tools Unlimited - Vol 1 - The Blanker Collection.iso / Blanker / Packages / GarshneBlanker / GSource / prefs.c < prev    next >
C/C++ Source or Header  |  1996-01-25  |  4KB  |  136 lines

  1. /*
  2.  *    Copyright (c) 1994 Michael D. Bayne.
  3.  *    All rights reserved.
  4.  *
  5.  *    Please see the documentation accompanying the distribution for distribution
  6.  *  and disclaimer information.
  7.  */
  8.  
  9. #include <exec/memory.h>
  10. #include <string.h>
  11. #include <stdlib.h>
  12.  
  13. #include "includes.h"
  14. #include "libraries.h"
  15. #include "protos/protos.h"
  16.  
  17. struct IBox WinBox = { 0, 16, 250, 200 };
  18. struct IBox OldBox = { 0, 0, 0, 0 };
  19. BYTE OldBlanker[64] = "";
  20.  
  21. BlankerPrefs PrefsRec = { 1, TRUE, 600, 300, BC_NONE, BC_NONE, "Alt Help",
  22.                               "Alt Delete", "Random", "Blankers", 0L };
  23. STRPTR CornerStrs[] = { "NONE", "UPPERLEFT", "UPPERRIGHT", "LOWERRIGHT",
  24.                             "LOWERLEFT" };
  25.  
  26. VOID BlankerToEnv( BlankerPrefs *Prefs )
  27. {
  28.     if( !Stricmp( OldBlanker, Prefs->bp_Blanker ))
  29.         return;
  30.     strcpy( OldBlanker, Prefs->bp_Blanker );
  31.     SetVar37( "BLANKER", Prefs->bp_Blanker, 64, GVF_GLOBAL_ONLY|GVF_SAVE_VAR );
  32. }
  33.  
  34. VOID WinBoxToEnv( struct IBox *Box )
  35. {
  36.     if( !memcmp( Box, &OldBox, sizeof( struct IBox )))
  37.         return;
  38.     OldBox = *Box;
  39.     SetVar37( "GBLANKER.win", ( STRPTR )Box, sizeof( struct IBox ),
  40.              GVF_GLOBAL_ONLY|GVF_BINARY_VAR|GVF_DONT_NULL_TERM|GVF_SAVE_VAR );
  41. }    
  42.  
  43. BlankerPrefs *LoadDefaultPrefs( VOID )
  44. {
  45.     struct DiskObject *bDO;
  46.     
  47.     GetVar37( "BLANKER", PrefsRec.bp_Blanker, 64, 0L );
  48.     GetVar37( "GBLANKER.win", ( STRPTR )&WinBox, sizeof( struct IBox ),
  49.              GVF_BINARY_VAR|GVF_DONT_NULL_TERM );
  50.     
  51.     strcpy( OldBlanker, PrefsRec.bp_Blanker );
  52.     OldBox = WinBox;
  53.  
  54.     if( bDO = GetDiskObject( ProgName ))
  55.     {
  56.         STRPTR tooltype;
  57.  
  58.         if( tooltype = FindToolType( bDO->do_ToolTypes, "CX_PRIORITY" ))
  59.             PrefsRec.bp_Priority = atoi( tooltype );
  60.         if( tooltype = FindToolType( bDO->do_ToolTypes, "CX_POPUP" ))
  61.             PrefsRec.bp_PopUp = ( LONG )MatchToolValue( tooltype, "YES" );
  62.         if( tooltype = FindToolType( bDO->do_ToolTypes, "CX_POPKEY" ))
  63.             strcpy( PrefsRec.bp_PopKey, tooltype );
  64.         if( tooltype = FindToolType( bDO->do_ToolTypes, "BLANKKEY" ))
  65.             strcpy( PrefsRec.bp_BlankKey, tooltype );
  66.         if( tooltype = FindToolType( bDO->do_ToolTypes, "TIMEOUT" ))
  67.             PrefsRec.bp_Timeout = 10 * atoi( tooltype );
  68.         if( tooltype = FindToolType( bDO->do_ToolTypes, "RANDTIMEOUT" ))
  69.             PrefsRec.bp_RandTimeout = 10 * atoi( tooltype );
  70.         if( tooltype = FindToolType( bDO->do_ToolTypes, "BLANKERDIR" ))
  71.             strcpy( PrefsRec.bp_Dir, tooltype );
  72.         if( tooltype = FindToolType( bDO->do_ToolTypes, "REPLACE" ))
  73.             PrefsRec.bp_Flags |=
  74.                 ( MatchToolValue( tooltype, "YES" ) ? BF_REPLACE : 0L );
  75.         if( tooltype = FindToolType( bDO->do_ToolTypes, "BLANKCORNER" ))
  76.         {
  77.             LONG i;
  78.  
  79.             for( i = 1; i < 5; i++ )
  80.             {
  81.                 if( MatchToolValue( tooltype, CornerStrs[i] ))
  82.                 {
  83.                     PrefsRec.bp_BlankCorner = i;
  84.                     break;
  85.                 }
  86.             }
  87.         }
  88.         if( tooltype = FindToolType( bDO->do_ToolTypes, "DONTCORNER" ))
  89.         {
  90.             LONG i;
  91.  
  92.             for( i = 1; i < 5; i++ )
  93.             {
  94.                 if( MatchToolValue( tooltype, CornerStrs[i] ))
  95.                 {
  96.                     PrefsRec.bp_DontCorner = i;
  97.                     break;
  98.                 }
  99.             }
  100.         }
  101.         FreeDiskObject( bDO );
  102.     }
  103.     
  104.     return &PrefsRec;
  105. }
  106.  
  107. LONG EntriesInList( struct List *List )
  108. {
  109.     BlankerEntry *Ctr = ( BlankerEntry * )List->lh_Head;
  110.     LONG Entries = 0;
  111.  
  112.     for( ; Ctr->be_Node.ln_Succ; Ctr = ( BlankerEntry * )Ctr->be_Node.ln_Succ )
  113.         if( !Ctr->be_Disabled )
  114.             Entries++;
  115.  
  116.     return Entries;
  117. }
  118.  
  119. STRPTR RandomModule( VOID )
  120. {
  121.     BlankerEntry *Ent = ( BlankerEntry * )BlankerEntries->lh_Head;
  122.     LONG i = EntriesInList( BlankerEntries ) - 1;
  123.     LONG Entry = RangeRand( i ) + 1;
  124.     
  125.     if( !i )
  126.         return 0L;
  127.     
  128.     for( ;; )
  129.     {
  130.         if( !Ent->be_Disabled )
  131.             if( !--Entry )
  132.                 return Ent->be_Name;
  133.         Ent = ( BlankerEntry * )Ent->be_Node.ln_Succ;
  134.     }
  135. }
  136.